package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户输入文件名--->假设： a.txt
 *     然后，针对文件进行读写操作
 *     用户可以在【控制台】输入一行行的文本内容，要求：写入a.txt文件中
 *     判断，如果用户输入"退出/exit"，程序结束
 *     a.txt直接出现在API 项目下 保存对应的文本内容
 * 要求：1.标准流--结合异常处理
 *      2.输出流--->输入流【读】 单元测试 testNote
 */
public class Note {
    //单元测试 相对路径 ./a.txt 当前父级文件夹路径  API下
    //主方法   相对路径 ./a.txt 当前根级文件夹路径 javaAPI下
    public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException {
        FileOutputStream fos=null;
        OutputStreamWriter osw=null;
        BufferedWriter bw=null;
        PrintWriter pw=null;
        //try/catch/finally适配IO  |  捕获异常--关闭流
        try {
          //1.从控制台输入：   a.txt  文本
          Scanner input = new Scanner(System.in);
          System.out.println("请输入你的文件名：");
          String text = input.nextLine();  //获取一行文本
          //  System.out.println(text);  打桩
          //2.流---写
           fos =new FileOutputStream(text);
           osw =new OutputStreamWriter(fos, "UTF8");//转换流
            bw =new BufferedWriter(osw); //缓冲输出流--加速字符串传输
            pw =new PrintWriter(bw);
          //3.往假设a.txt写入文件--一直写入 直到写出文件“退出/exit”
          //3.1 定义字符串变量--赋值为null 接收用户每次输入文本内容
          String line = null;
          //3.2【补充】
          System.out.println("请开始输入内容【'退出'程序结束】");
          //3.2一直写入
          while (true) {
              line = input.nextLine(); //从控制台获取一行文本
              //3.3 判断条件---判断line是否等于 退出或者 exit 程序结束
              if (line.equals("退出") || line.equals("exit")) {
                  break; //跳出方法体
              }
              //3.4 PW字符输出流--写出
              pw.println(line);
          }
      }catch (FileNotFoundException e){
        e.printStackTrace();
      }catch (UnsupportedEncodingException e){
            e.printStackTrace();
      }catch (IOException e){
            e.printStackTrace();
      }finally {
            //3.5【用户体验】拜拜
            System.out.println("拜拜~~ 请查看");
            if (pw!=null)
            //3.6 关闭高级流
            pw.close();
        }
    }
@Test
    public void textNote() throws UnsupportedEncodingException, FileNotFoundException {
    Scanner input=new Scanner(System.in);
    System.out.println("请输入:");
    String text=input.nextLine();
    FileOutputStream fos=
            new FileOutputStream(text);
    OutputStreamWriter osw=
            new OutputStreamWriter(fos,"UTF8");
    String line=null;
    System.out.println("请开始输入内容【'退出'程序结束】");

}
}
